package xml.personaje;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;

import xml.adapter.PosicionAdapter;
import xml.adapter.SentidoAdapter;

import dominio.Fantasma;
import dominio.Juego;

@XmlRootElement(name="juego")
public class XmlJuego {
	
	private Juego juego;
	private List<XmlFantasma> xmlFantasmas;
	
	public XmlJuego() {
		// TODO Auto-generated constructor stub
	}
	
	public XmlJuego(Juego juego) {
		this.juego = juego;
		this.xmlFantasmas = new ArrayList<XmlFantasma>();
		inicializarFantasmas();
	}

	private void inicializarFantasmas() {
		Integer i = 1;
		for (Fantasma fantasma : this.juego.getFantasmas()) {
			this.xmlFantasmas.add(new XmlFantasma(fantasma, i.toString(), this.juego.getLaberinto()));
			i++;
		}		
	}

	@XmlAttribute
	public String getPosicionPacman() {
		return PosicionAdapter.adapt(this.juego.getPacman().getPosicion());
	}
	public void setPosicionPacman(String posicionPacman) {
		//this.juego.getPacman().setPosicion(PosicionAdapter.adapt(posicionPacman));
	}

	@XmlAttribute
	public String getFila() {
		return PosicionAdapter.adapt(this.juego.getPacman().getPosicion().getFila());
	}
	public void setFila(String fila) {
		//this.fila = fila;
	}

	@XmlAttribute
	public String getColumna() {
		return PosicionAdapter.adapt(this.juego.getPacman().getPosicion().getColumna());
	}
	public void setColumna(String columna) {
		//this.columna = columna;
	}

	@XmlAttribute
	public String getSentido() {
		return SentidoAdapter.adapt(this.juego.getPacman().getSentidoMovimiento());
	}
	public void setSentido(String sentido) {
		this.juego.getPacman().setSentidoMovimiento(SentidoAdapter.adapt(sentido));
	}

	@XmlAttribute
	public String getPuntaje() {
		return this.juego.getPacman().getPuntaje().toString();
	}
	public void setPuntaje(String puntaje) {
		this.juego.getPacman().setPuntaje(new Integer(puntaje));
	}

	@XmlAttribute
	public String getFinJuego() {
		return this.juego.terminoPartida().toString();
	}
	public void setFinJuego(String finJuego) {
		//this.finJuego = finJuego;
	}

	@XmlElementRef
	public List<XmlFantasma> getFantasmas() {
		return this.xmlFantasmas;
	}
	public void setFantasmas(List<XmlFantasma> fantasmas) {
		this.xmlFantasmas = fantasmas;
	}

}